﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BrokerBase.Lib.Product;

namespace BrokerBase.Lib.Policy
{
    public interface ISchemeActing
    {

        /// <summary>
        /// 所属的方案
        /// </summary>
        IScheme Scheme { get; }
        /// <summary>
        /// 最大期间
        /// </summary>
        int MaxPeriod { get; }
        /// <summary>
        /// 开始年度
        /// </summary>
        int BeginYear { get; set; }
        /// <summary>
        /// 期间假设
        /// </summary>
        ISchemePeriodActing[] PeriodActings { get; }
        /// <summary>
        /// 保单的推演
        /// </summary>
        IPolicyActing[] PolicyActings { get; }
        /// <summary>
        /// 辅助属性
        /// </summary>
        IDictionary<IAuxProperty, object> AuxConfigs { get; }
        /// <summary>
        /// 辅助属性设置
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        object GetAuxConfigValue(string name);
        /// <summary>
        /// 运行时的信息
        /// </summary>
        IDictionary<string, object> RunTimeProperties { get; set; }

        void Calc();
    }
}
